﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SuperStarProject.Models;
using System.Data.SqlClient;
using SuperStarProject.Models;

namespace SuperStarProject.DAO
{
    public class PhieuChonQuaTangDAO
    {
        public static void Create(DSQuaTang item)
        {
            List<int> lstSoLuong = new List<int>();
            lstSoLuong.Add(item.SoLuong0);
            lstSoLuong.Add(item.SoLuong1);
            lstSoLuong.Add(item.SoLuong2);
            lstSoLuong.Add(item.SoLuong3);
            lstSoLuong.Add(item.SoLuong4);
            lstSoLuong.Add(item.SoLuong5);
            lstSoLuong.Add(item.SoLuong6);
            lstSoLuong.Add(item.SoLuong7);
            lstSoLuong.Add(item.SoLuong8);
            lstSoLuong.Add(item.SoLuong9);

            List<QuaTangModel> lstQuaTang = QuaTangDAO.ShowAll(item.MaSP);

            for (int i = 0; i <= 9; i++)
            {
                if (lstSoLuong[i] > 0)
                {
                    InsertQua(item.MaPhieuMuaHang, lstQuaTang[i].MaQua, lstSoLuong[i]);
                }
            }

        }
        public static void Update(DSQuaTang item)
        {
            List<int> lstSoLuong = new List<int>();
            lstSoLuong.Add(item.SoLuong0);
            lstSoLuong.Add(item.SoLuong1);
            lstSoLuong.Add(item.SoLuong2);
            lstSoLuong.Add(item.SoLuong3);
            lstSoLuong.Add(item.SoLuong4);
            lstSoLuong.Add(item.SoLuong5);
            lstSoLuong.Add(item.SoLuong6);
            lstSoLuong.Add(item.SoLuong7);
            lstSoLuong.Add(item.SoLuong8);
            lstSoLuong.Add(item.SoLuong9);

            List<QuaTangModel> lstQuaTang = QuaTangDAO.ShowAll(item.MaSP);

            for (int i = 0; i <= 9; i++)
            {
                if (lstSoLuong[i] > 0)
                {
                    UpdateQua(item.MaPhieuMuaHang, lstQuaTang[i].MaQua, lstSoLuong[i]);
                }
            }
        }
        /// <summary>
        /// Chưa xây dựng xong
        /// </summary>
        /// <param name="rdr"></param>
        /// <returns></returns>
        static List<DSQuaTang> ConvertDS(SqlDataReader rdr)
        {
            List<DSQuaTang> lstItem = new List<DSQuaTang>();
            while (rdr.Read())
            {
                DSQuaTang item = new DSQuaTang();
                lstItem.Add(item);
            }
            return lstItem;
        }
        static List<PhieuChonQuaTangModel> ConvertPC(SqlDataReader rdr)
        {
            List<PhieuChonQuaTangModel> lstItem = new List<PhieuChonQuaTangModel>();
            while (rdr.Read())
            {
                PhieuChonQuaTangModel item = new PhieuChonQuaTangModel();
                item.MaPhieuMuaHang = (string)rdr["MaPhieuMuaHang_PC"];
                item.MaQua = (string)rdr["MaQua"];
                item.SoLuong = (int)rdr["SoLuong"];
                lstItem.Add(item);
            }
            return lstItem;
        }
        static bool InsertQua(string maphieumua, string maqua, int soluong)
        {
            SqlConnection db = DataProvider.DBconnection();

            List<SqlParameter> lstParameter = new List<SqlParameter>();
            lstParameter.Add(new SqlParameter("@maphieumua", (object)maphieumua));
            lstParameter.Add(new SqlParameter("@maqua", (object)maqua));
            lstParameter.Add(new SqlParameter("@soluong", (object)soluong));


            if (DataProvider.RunStoredProcParams_NoRead("sp_chonqua", db, lstParameter) == 0)
                return true;
            return false;
        }
        static bool UpdateQua(string maphieumua, string maqua, int soluong)
        {
            SqlConnection db = DataProvider.DBconnection();

            List<SqlParameter> lstParameter = new List<SqlParameter>();
            lstParameter.Add(new SqlParameter("@maphieumua", (object)maphieumua));
            lstParameter.Add(new SqlParameter("@maqua", (object)maqua));
            lstParameter.Add(new SqlParameter("@soluong", (object)soluong));


            if (DataProvider.RunStoredProcParams_NoRead("sp_thaydoiqua", db, lstParameter) == 0)
                return true;
            return false;
        }
        public static int TongDiemThuongDaSuDung(string maPhieuMuaHang)
        {
            return 0;
        }
        public static bool DeleteAllPhieuChonQua(string maphieumua)
        {
            return true;
        }
        public static List<PhieuChonQuaTangModel> ShowAllQuaTangTheoPhieuMuaHang(string maphieumuahang)
        {
            PhieuChonQuaTangModel prod = new PhieuChonQuaTangModel();
            SqlParameter para_productId = new SqlParameter("@maphieumuahang", (object)maphieumuahang);

            SqlConnection db = DataProvider.DBconnection();

            List<SqlParameter> lstParameter = new List<SqlParameter>();
            lstParameter.Add(para_productId);

            SqlDataReader rdr = DataProvider.RunStoredProcParams_Read("sp_select_PhieuChonQuaTang_ByPhieuMuaHang", db, lstParameter);

            return ConvertPC(rdr);
        }
    }
}
